package Controlador;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JOptionPane;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;

import Modelo.Cooperativa;
import Modelo.DiaFeriado;
import Modelo.Terminal;
import Modelo.TipoUnidad;
import Vista.VDiaFeriado;
import Vista.VTipoUnidad;


@SuppressWarnings("all")
public class CDiaFeriado implements ActionListener {

	private Terminal ter;
	private DiaFeriado df;
	private VDiaFeriado vdf;
	private CTerminal cter;
	
	public CDiaFeriado(Terminal ter, CTerminal cter){
		super();
		this.ter = ter;
		this.cter = cter;
		this.df = new DiaFeriado();
		this.vdf = new VDiaFeriado(this);
		
		vdf.setVisible(true);
		llenarTabla();
		
	}
	
	public void actionPerformed(ActionEvent e) {
	      if(e.getActionCommand().toLowerCase().equals("modificar"))
	      {
	    	  		Modificar();
	      }
	      else if(e.getActionCommand().toLowerCase().equals("guardar"))
	      {
	    	  		Guardar();
	      }else if(e.getActionCommand().toLowerCase().equals("limpiar"))
	      {
	    	  Limpiar();
	      }else if(e.getActionCommand().toLowerCase().equals("eliminar"))
	      {
	    	  Eliminar();
	      }
	      else if(e.getActionCommand().toLowerCase().equals("buscar")){
	    	  Buscar();
	      }
	      
	}

	private void Buscar() {
		DiaFeriado df;
		if((vdf.getTxtCodigo().getText().equals(""))){
			vdf.mostrarMensaje("Debe llenar el campo codigo para poder buscar");		
		}else if(vdf.getTxtCodigo().getText().toString() != "")
		{
			String codigo = vdf.getTxtCodigo().getText().toString();
			
			
		
			if( ter.buscarDiaFeriado(codigo) == null){
				vdf.mostrarMensajeError("El Dia feriado con codigo " + codigo + " no existe" );
			}else
			 {
				df = ter.buscarDiaFeriado(codigo);
				vdf.getTxtCodigo().setEnabled(false);
				vdf.getTxtDescripcion().setText(df.getDiaferiado().toString());
				vdf.getTxtDescripcion().setEnabled(false);
				
				vdf.getBtnGuardar().setEnabled(false);
				vdf.getBtnBuscar().setEnabled(false);

			}
			
			

		}
	}

	private void Eliminar() {
		// TODO Auto-generated method stub
		
	}

	private void Limpiar() {
		//pone los campos de texto en blanco
		vdf.getTxtCodigo().setText("");
		vdf.getTxtDescripcion().setText("");
		
		
		//habilita todos los botones
		vdf.getBtnBuscar().setEnabled(true);
		vdf.getBtnEliminar().setEnabled(true);
		vdf.getBtnModificar().setEnabled(true);
		vdf.getBtnGuardar().setEnabled(true);
		
		//habilita todos los campos de texto
		
		vdf.getTxtCodigo().setEnabled(true);
		vdf.getTxtDescripcion().setEnabled(true);

	
		
	}

	private void Guardar() {
		//Se crea un objeto tipo de pago
		if(validarDatos()){
			TipoUnidad tu = new TipoUnidad();
			df.setCodigo(this.vdf.getTxtCodigo().getText().toString());
			df.setDiaferiado(this.vdf.getTxtDescripcion().getText().toString());
			ter.agregarDiaFeriado(df);
			
			JOptionPane.showMessageDialog(null, "Registro Dia Feriado Exitoso", "Guardar Dia feriado", 1);
			vdf.getTxtCodigo().setText("");
			vdf.getTxtDescripcion().setText("");
			
			vdf.limpiarTabla();
			llenarTabla();
		}
		
	}

	private boolean validarDatos() {
		if(vdf.getTxtCodigo().getText().toString().equalsIgnoreCase("")){
			vdf.mostrarMensaje("Debe ingresar un codigo del dia feriado");
			return false;
		}else if (vdf.getTxtDescripcion().getText().toString().equalsIgnoreCase("")){
			vdf.mostrarMensaje("Debe ingresar un dia feriado");
			return false;
		}else if (ter.buscarDiaFeriado(vdf.getTxtCodigo().getText()) != null){
			vdf.mostrarMensaje("El dia feriado con codigo " + vdf.getTxtCodigo().getText() + " ya existe");
			return false;
		}
		
		return true; //en caso de que esten llenos los campos
	}

	private void Modificar() {
		// TODO Auto-generated method stub
		
	}
	
	public void llenarTabla() {
		
		vdf.limpiarTabla();
		for (int k = 0; k < ter.contarDiasFeriados(); k++) {
			Vector<String> datos = new Vector<String>(2, 1);
			String codigodia = ter.obtenerDiaFeriado(k).getCodigo();
			String dia = ter.obtenerDiaFeriado(k).getDiaferiado();
			datos.add(codigodia);
			datos.add(dia);
			vdf.agregarFilaTblDias(datos);
		}
	}
	
	
	
	
}
